const fs = require('fs');
const fsPromises = require('fs').promises;

// 对文件夹操作
// fs.mkdir('./logs', (err) => {
//     if (err) {
//         throw err;
//     }
//     console.log('文件夹创建成功');
// }) 

// fs.rename('./logs', './log', (err) => {
//     console.log('文件夹修改成功');
// })

// fs.rmdir('./log', (err) => {
//     console.log('删除成功');
// })

// fs.readdir('./logs', (err, result) => {
//     console.log(result);
// })

// 对文件操作

// fs.writeFile('./logs/log1.log', 'hello\nworld', (err) => {
//     console.log('新文件已经创建');
// })

// fs.appendFile('./logs/log1.log', '!!!', (err) => {
//     console.log('追加内容成功');
// })

// fs.unlink('./logs/log1.log', (err) => {
//     console.log('删除文件成功');
// })

// fs.readFile('./logs/log1.log', (err, result) => {
//     console.log(result.toString());
// })

// fs.readFile('./logs/log1.log', 'utf-8', (err, result) => {
//     console.log(result);
// })

// 所有文件操作都存在同步方法

// const file = fs.readFileSync('./logs/log1.log')
// console.log(file.toString());

// 异步读取文件
// fsPromises.readFile('./app.js', 'utf-8').then((result) => {
//     console.log(result);
// })

// 异步读取文件
function readFile(url) {
    return new Promise((resolve) => {
        fs.readFile(url, 'utf-8', (err, result) => {
            resolve(result);
        })
    })
}
// ;(async () => {
//     const data = await readFile('./app.js');
//     console.log(data);
// })()


// 读取目录下所有文件信息
// for (var i = 0; i < 10; i++) {
//     fs.writeFile(`./logs/log${i}.txt`, `log${i}!!!`, (err) => {
//         console.log('done.');
//     })
// }

function readDir(dir) {
    fs.readdir(`${dir}/`, (err, nameArr) => {
        nameArr.forEach((value, index) => {
            let path = `${dir}/${value}`;
            fs.stat(path, (err, stats) => {
                if (stats.isDirectory()) {
                    readDir(path);
                } else {
                    fs.readFile(path, 'utf-8', (err, content) => {
                        console.log(content);
                    })
                }
            })
        });
    })
}
// readDir('.');

// 监听文件的变化 无法实时刷新代码 优先使用watchFile
fs.watch('./app.js', () => {
    console.log(0);
    console.log(666);
})